home *** CD-ROM | disk | FTP | other *** search
- 10 '-----------------------------------
- 20 ' FRACTAL CURVE DAM
- 30 '-----------------------------------
- 40 CLS:KEY OFF:OPTION BASE 1
- 50 SCREEN 1,1:DEFINT I-R
- 60 '----- INPUT PARAMETERS ------------
- 70 RESTORE 550
- 80 READ NL,DL,AU,SC,IP
- 90 DIM A(NL):FOR I=1 TO NL:READ A(I)
- 100 A(I)=A(I)*AU*3.141593/180:NEXT I
- 110 '----- POSITION THE CURVE ---------
- 120 XMAX=.5+SC*.5:XMIN=.5-SC*.5
- 130 ON IP GOTO 150,160,170
- 140 PRINT "IP>3":END
- 150 YMAX=.36*SC:YMIN=-.36*SC:GOTO 180
- 160 YMAX=.54*SC:YMIN=-.18*SC:GOTO 180
- 170 YMAX=.6*SC:YMIN=-.12*SC
- 180 VIEW:WINDOW (XMIN,YMIN)-(XMAX,YMAX)
- 190 '----- MAIN ROUTINE ---------------
- 200 FOR LEVEL=1 TO 4:CLS
- 210 LOCATE 25,1:PRINT "LEVEL=";LEVEL;
- 220 XL=DL^LEVEL:NT=NL^LEVEL
- 230 PRINT "......";NT;"POINTS"
- 240 PSET(0,0):X=0:Y=0:N=0
- 250 IF LEVEL=1 THEN BAT=0:GOTO 350
- 260 FOR I1=1 TO NL:BA(1)=A(I1)
- 270 IF LEVEL=2 THEN 330
- 280 FOR I2=1 TO NL:BA(2)=A(I2)
- 290 IF LEVEL=3 THEN 330
- 300 FOR I3=1 TO NL:BA(3)=A(I3)
- 310 IF LEVEL=4 THEN 330
- 320 FOR I4=1 TO NL:BA(4)=A(I4)
- 330 BAT=0:FOR K=1 TO LEVEL
- 340 BAT=BAT+BA(K):NEXT K
- 350 FOR J=1 TO NL:CA=BAT+A(J)
- 360 X=X+XL*COS(CA):Y=Y+XL*SIN(CA)
- 370 N=N+1:LINE -(X,Y):NEXT J
- 380 IF N=NT THEN 450
- 390 ON LEVEL GOTO 450,430,420,410,400
- 400 NEXT I4
- 410 NEXT I3
- 420 NEXT I2
- 430 NEXT I1
- 440 '----- CONTINUE? ------------------
- 450 LOCATE 1,1
- 460 PRINT "ENTER to continue";
- 470 I$=INKEY$:IF I$="" THEN 450
- 480 IF I$=CHR$(13) THEN NEXT LEVEL
- 490 END
- 500 '----- END PROGRAM ----------------
- 510 ' SAUSAGE LINK
- 520 DATA 8,.25,90,1,1
- 530 DATA 0,1,0,-1,-1,0,1,0
- 540 ' PINWHEEL
- 550 DATA 10,.2886751,30,1,1
- 560 DATA 1,-1,3,-1,-5,-5,-1,3,-1,1
- 570 ' ARROWHEAD
- 580 DATA 10,.25,60,1,1
- 590 DATA 0,0,2,0,-1,-3,-2,0,1,0
- 600 ' HEXAGONAL CONNECTION
- 610 DATA 10,.25,60,1,1
- 620 DATA 0,1,0,-1,3,3,-1,0,1,0
- 630 '
- 640 '----- END DATA -------------------